package tushuguanlixitong.text;  

import org.openqa.selenium.By;  
import org.openqa.selenium.WebDriver;  
import org.openqa.selenium.WebElement;  
import org.openqa.selenium.chrome.ChromeDriver;  
import org.openqa.selenium.support.ui.ExpectedConditions;  
import org.openqa.selenium.support.ui.WebDriverWait;  

import java.time.Duration;  

public class AddBookTest {  
    public static void main(String[] args) {  
        // 设置 ChromeDriver 的路径  
        System.setProperty("webdriver.chrome.driver", "D:\\selenium\\chromedriver.exe"); // 确保路径正确  

        // 创建 WebDriver 实例  
        WebDriver driver = new ChromeDriver();  

        try {  
            // 打开登录页面  
            driver.get("http://localhost:8080/tushuguanlixitong/adminLogin.html"); 
            
            // 创建 WebDriverWait 实例  
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));  

            // 输入用户名  
            WebElement usernameInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("username")));  
            usernameInput.sendKeys("admin"); // 假设用户为admin  

            // 输入密码  
            WebElement passwordInput = driver.findElement(By.name("password"));  
            passwordInput.sendKeys("admin"); // 假设密码为admin  

            // 点击登录按钮  
            WebElement loginButton = driver.findElement(By.cssSelector("input[type='submit']"));  
            loginButton.click();  

            // 等待登录成功并确认成功后跳转页面（加上你的具体条件）  
            wait.until(ExpectedConditions.urlContains("http://localhost:8080/tushuguanlixitong/admin/index.jsp")); // 根据实际成功登录后的页面更新此处 
            
            WebElement bookManagementLink = driver.findElement(By.linkText("书籍管理"));  
            bookManagementLink.click(); 
            
            Thread.sleep(3000);
            
            
            wait.until(ExpectedConditions.urlContains("http://localhost:8080/tushuguanlixitong/admin/booklist.jsp"));
                      
            //添加书籍按钮
            WebElement addButton = driver.findElement(By.cssSelector("input[type='button']")); // 替换为实际的按钮属性  
            addButton.click();  

            wait.until(ExpectedConditions.urlContains("http://localhost:8080/tushuguanlixitong/admin/bookadd.jsp"));
            
            // 填写书名  
            WebElement nameInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("name")));  
            nameInput.sendKeys("测试书籍");  

            // 填写作者  
            WebElement authorInput = driver.findElement(By.name("author"));  
            authorInput.sendKeys("测试作者");  

            // 选择图书馆  
            WebElement librarySelect = driver.findElement(By.name("library_id"));  
            librarySelect.sendKeys("1"); // 假设 ID 为 1 的图书馆存在  

            // 选择分类  
            WebElement sortSelect = driver.findElement(By.name("sort_id"));  
            sortSelect.sendKeys("1"); // 假设 ID 为 1 的分类存在  

            // 填写位置  
            WebElement positionInput = driver.findElement(By.name("position"));  
            positionInput.sendKeys("A1");  

            // 选择状态  
            WebElement statusRadio = driver.findElement(By.xpath("//input[@name='status' and @value='1']")); // 可借  
            statusRadio.click();  

            // 填写书籍简介  
            WebElement descriptionTextarea = driver.findElement(By.name("description"));  
            descriptionTextarea.sendKeys("这是一本测试书籍的简介。");  

            // 提交表单  
            WebElement submitButton = driver.findElement(By.xpath("//button[@lay-filter='bookForm']"));  
            submitButton.click();  

            // 等待成功消息  
            wait.until(ExpectedConditions.alertIsPresent());  
            String alertMessage = driver.switchTo().alert().getText();  
            System.out.println("Alert Message: " + alertMessage);  
            driver.switchTo().alert().accept(); // 关闭提示框  

            // 这里可以添加更多的验证逻辑，例如检查数据库是否成功插入了书籍  

        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            // 关闭浏览器  
            driver.quit();  
        }  
    }  
}